import { defineStore } from 'pinia'
import { routes } from '@/router'

export const usePermissionStore = defineStore('permission', {
  state: () => ({
    routes: [],
    sidebarRoutes: []
  }),

  getters: {
    // 获取侧边栏路由
    getSidebarRoutes: (state) => {
      const result = []
      const groups = {}
      
      // 遍历路由，分类处理
      for (const route of state.routes) {
        // 跳过隐藏的路由
        if (route.meta?.hidden) continue
        
        // 如果路由有group属性，按组分类
        if (route.meta?.group) {
          if (!groups[route.meta.group]) {
            groups[route.meta.group] = []
          }
          groups[route.meta.group].push(route)
        } else {
          // 没有group属性的路由直接添加到结果中（如战术面板）
          result.push(route)
        }
      }
      
      // 添加分组，按指定顺序
      const groupOrder = ['核心功能模块', '分析与管理模块']
      
      for (const groupName of groupOrder) {
        if (groups[groupName] && groups[groupName].length > 0) {
          // 添加分组标题
          result.push({
            path: `group-${groupName}`,
            meta: {
              title: groupName,
              type: 'group'
            }
          })
          
          // 添加分组下的路由
          result.push(...groups[groupName])
        }
      }
      
      return result
    }
  },

  actions: {
    // 设置路由
    setRoutes(routes) {
      this.routes = routes
      this.sidebarRoutes = this.getSidebarRoutes
    },

    // 初始化权限路由
    generateRoutes() {
      // 这里可以根据用户权限过滤路由
      const accessedRoutes = routes.filter(route => {
        // 简单的权限检查，可以根据实际需求修改
        return !route.meta?.requiresAuth || this.hasPermission(route)
      })
      
      this.setRoutes(accessedRoutes)
      return accessedRoutes
    },

    // 权限检查
    hasPermission(route) {
      // 这里实现具体的权限检查逻辑
      // 暂时返回 true，允许所有路由
      return true
    }
  }
}) 